package cz.vse.adventura.po1715.xburj54_bursa.gui;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;


/*******************************************************************************
 * Instance třídy {@code MenuRecord} představují položku hlavní nabídky,
 *      ve které jsou volby pro záznam do souboru.
 *
 * @author    Jan Bursa
 * @version   1.01
 */
public class MenuRecord extends JMenu
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    /** GUI, pro které tato instance pracuje. */
    private final GUI_04 gui;

      
    
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public MenuRecord(GUI_04 gui)
    {
        super("Záznam");
        setMnemonic('Z');
        this.gui = gui;
        addItemRecordInFile();
        addItemRecordInWindow();
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
    
    
    
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
    
    /***************************************************************************
     * Přidá položku menu, záznam do souboru
     */
    private void addItemRecordInFile()
    {
        
        final JCheckBoxMenuItem recordInFile = new JCheckBoxMenuItem(
                                              "Záznam do souboru", 
                                                gui.getLog().getRecordInFile());
        this.add(recordInFile);

        recordInFile.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e)
            {
                Boolean result = gui.getLog().setRecordInFile(recordInFile.getState());
                if(!result) {
                    recordInFile.setState(!recordInFile.getState());
                }
            }
        });
    }
    
    /***************************************************************************
     * Přidá položku menu, záznam v okně
     */
    private void addItemRecordInWindow()
    {
        final JCheckBoxMenuItem recordInWindow = new JCheckBoxMenuItem(
                                              "Záznam v okně", 
                                        gui.getLog().getRecordInWindow());
        this.add(recordInWindow);

        recordInWindow.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e)
            {
                gui.getLog().setRecordInWindow(recordInWindow.getState());
            }
        });
    }
    
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        MenuRecord inst = new MenuRecord();
//    }
//    public static void main( String[] args )  {  test();  }
}
